package com.safe.first.common.constants;

/**
 * @author Mickey
 * @since 2021/10/25
 */
public interface BaseEnum<T extends Enum<T> & BaseEnum<T>> {

    Integer getCode();

    String getName();

    /**
     * 通过code 查询相应枚举
     *
     * @param cls  class
     * @param code code
     * @param <T>  type
     * @return enum
     */
    static <T extends Enum<T> & BaseEnum<T>> T parseByCode(Class<T> cls, Integer code) {
        for (T t : cls.getEnumConstants()) {
            if (t.getCode().intValue() == code.intValue()) {
                return t;
            }
        }
        return null;
    }
}
